#ifndef __ARDUINO_MOCK_H__
#define __ARDUINO_MOCK_H__

using ::testing::Return;
using ::testing::AnyNumber;

#include "IArduino.h"
class ArduinoMock : public IArduino {
public:
	ArduinoMock() {
		EXPECT_CALL(*this, LOWVAL()).
		Times(AnyNumber()).
		WillRepeatedly(Return(0));
		
		EXPECT_CALL(*this, HIGHVAL()).
		Times(AnyNumber()).
		WillRepeatedly(Return(1));

		EXPECT_CALL(*this, IN()).
			Times(AnyNumber()).
		WillRepeatedly(Return(1));

		EXPECT_CALL(*this, OUT()).
			Times(AnyNumber()).
		WillRepeatedly(Return(0));
	}
	MOCK_METHOD1(dRead, int(int pin));
	MOCK_METHOD2(dWrite, void(int pin, int value));
	MOCK_METHOD0(HIGHVAL, int());
	MOCK_METHOD0(LOWVAL, int());
	MOCK_METHOD0(OUT, int());
	MOCK_METHOD0(IN, int());
	MOCK_METHOD2(pin, void(int ledPin, int mode));
	MOCK_METHOD0(milliseconds, long());
	MOCK_METHOD0(reset, void());
	MOCK_METHOD0(availableMem, int());
};

#endif